home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d6 / glazer.arc / NUMDAYS.BAS < prev    next >
BASIC Source File  |  1988-10-07  |  2KB  |  47 lines

  1. 100 'Number of days between dates ("NUMDAYS")
  2. 110 CLS
  3. 120 COLOR 0,15 : PRINT "Number of Days Between Dates" : COLOR 15,0
  4. 130 PRINT
  5. 140 '    Let user enter dates
  6. 150 GOSUB 1000    'Get number of days in months
  7. 160 PRINT "Enter starting date"
  8. 170 GOSUB 2000
  9. 180 GOSUB 280     'Find number of days since date 0
  10. 190 SFACTOR = FACTOR
  11. 200 PRINT : PRINT "Enter ending date"
  12. 210 GOSUB 2000
  13. 220 GOSUB 280     'Find number of days since date 0
  14. 230 EFACTOR = FACTOR
  15. 240 PRINT
  16. 250 PRINT "Number of days: "; EFACTOR - SFACTOR
  17. 260 END
  18. 270 '     Subroutine to calculate factor for a date
  19. 280 FACTOR = 365 * YEAR + DAY + 31 * (MONTH - 1)
  20. 290 'January or February
  21. 300 IF MONTH <= 2  THEN FACTOR = FACTOR + (YEAR - 1) \ 4 -                             INT (3/4 * ( (YEAR-1) \ 100 + 1) )
  22. 310 'March or later
  23. 320 IF MONTH >= 3  THEN FACTOR = FACTOR - INT (.4 * MONTH + 2.3) + YEAR \ 4 -            INT ( 3/4 * (YEAR \ 100 + 1) )
  24. 330 RETURN
  25. 990 '     Subroutine to set up list with number of days in months
  26. 1000 DIM NDAYS(12)
  27. 1010 FOR N = 1 TO 12
  28. 1020   READ NDAYS(N)
  29. 1030 NEXT N
  30. 1040 'Number of days in months
  31. 1050 DATA 31, 28, 31, 30
  32. 1060 DATA 31, 30, 31, 31
  33. 1070 DATA 30, 31, 30, 31
  34. 1080 RETURN
  35. 1990 '     Subroutine to let user enter date
  36. 2000 INPUT "Month (1-12): ", MONTH
  37. 2010 IF (MONTH < 1) OR (MONTH > 12)  THEN PRINT " *No such month *": GOTO 2000
  38. 2020 INPUT "Day (1-31): ", DAY
  39. 2030 INPUT "Year: ", YEAR
  40. 2040 IF (YEAR < 1900) OR (YEAR > 2100)  THEN PRINT "Invalid year": GOTO 2000
  41. 2050 'Check for leap year
  42. 2060 IF (YEAR MOD 4) = 0 AND (YEAR MOD 100) <> 0  THEN NDAYS(2) = 29
  43. 2070 IF (YEAR MOD 400) = 0  THEN NDAYS(2) = 29
  44. 2080 'Check for valid date
  45. 2090 IF DAY > NDAYS(MONTH)  THEN PRINT "* No such day *": GOTO 2000
  46. 2100 RETURN
  47.